Imports Entidades.E_Envio
Imports System.Data.SqlClient

Public Class D_Envio

    'Inherits Envio
    'Implements IEnvio

    Public Function Agregar_Envio(ByVal en As Entidades.E_Envio) As Boolean

        'IdEnvio = Envio1.IdEnvio
        'Fecha = Envio1.Fecha
        'Remitente = Envio1.Remitente
        'Destinatario = Envio1.Destinatario
        'Movil = Envio1.Movil
        'TipoDePago = Envio1.TipoDePago
        'TipoDeEnvio = Envio1.TipoDeEnvio
        'ImporteEnvio = Envio1.ImporteEnvio
        'ImporteContrareembolso = Envio1.ImporteContrareembolso
        'CantidadDePaquetes = Envio1.CantidadDePaquetes
        'UltimoEstado = Envio1.UltimoEstado


        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Conecta.Open()
            Comando = New SqlCommand(StringComando, Conecta)

            Comando.CommandText = "Envio_Agregar"
            Comando.CommandType = CommandType.StoredProcedure

            Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = en.IdEnvio
            Comando.Parameters.Add("@Fecha", SqlDbType.DateTime, 6, "Fecha").Value = en.Fecha
            Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = en.Remitente
            Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = en.Destinatario
            Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = en.Movil
            Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = en.TipoDePago
            Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = en.TipoDeEnvio
            Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = en.ImporteEnvio
            Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = en.ImporteContrareembolso
            Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = en.CantidadDePaquetes
            Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = en.UltimoEstado

            Comando.ExecuteNonQuery()

            MsgBox("Registro Grabado con Exito")

            Conecta.Close()
            Conecta.Dispose()

            Return True

        Catch ex As Exception

            MsgBox(ex.Message)

            Return False

        End Try

    End Function

    Public Function Agregar_Envio(ByVal IdEnvio, ByVal Fecha, ByVal Remitente, ByVal Destinatario, ByVal Movil, ByVal TipoDePago, ByVal TipoDeEnvio, ByVal ImporteEnvio, ByVal ImporteContrareembolso, ByVal CantidadDePaquetes, ByVal UltimoEstado) As Boolean

        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Conecta.Open()
            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_Agregar"
            Comando.CommandType = CommandType.StoredProcedure

            Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = ""
            Comando.Parameters.Add("@Fecha", SqlDbType.VarChar, 6, "Fecha").Value = ""
            Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = ""
            Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = ""
            Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = ""
            Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = ""
            Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = ""
            Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = ""
            Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = ""
            Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = ""
            Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = ""

            Comando.ExecuteNonQuery()

            Conecta.Close()
            Conecta.Dispose()

            Return True

        Catch ex As Exception

            MsgBox(ex.Message.ToString)

            Return False
        End Try

    End Function

    Public Function Traer_Envio(ByVal n As Integer) As Entidades.E_Envio

        Try


            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Comando = New SqlCommand(StringComando, Conecta)
            Conecta.Open()
            Comando.CommandText = "Envio_SelectRow"
            Comando.CommandType = CommandType.StoredProcedure

            Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = n
            Comando.ExecuteNonQuery()

            Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
            Dim Ds As DataSet = New DataSet(Comando.CommandText)

            Adapter.Fill(Ds)

            Dim EnvioDevuelto As New Entidades.E_Envio

            EnvioDevuelto.IdEnvio = Ds.Tables(0).Rows(0).Item(0)
            EnvioDevuelto.Fecha = Ds.Tables(0).Rows(0).Item(1)
            EnvioDevuelto.Remitente = Ds.Tables(0).Rows(0).Item(2)
            EnvioDevuelto.Destinatario = Ds.Tables(0).Rows(0).Item(3)
            EnvioDevuelto.Movil = Ds.Tables(0).Rows(0).Item(4)
            EnvioDevuelto.TipoDePago = Ds.Tables(0).Rows(0).Item(5)
            EnvioDevuelto.TipoDeEnvio = Ds.Tables(0).Rows(0).Item(6)
            EnvioDevuelto.ImporteEnvio = Ds.Tables(0).Rows(0).Item(7)
            EnvioDevuelto.ImporteContrareembolso = Ds.Tables(0).Rows(0).Item(8)
            EnvioDevuelto.CantidadDePaquetes = Ds.Tables(0).Rows(0).Item(9)
            EnvioDevuelto.UltimoEstado = Ds.Tables(0).Rows(0).Item(10)

            Return EnvioDevuelto

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)

            Dim EnvioDevuelto As New Entidades.E_Envio
            Return EnvioDevuelto

        End Try

    End Function

    Public Function TraerEnvios_TodosRegistros() As DataSet

        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_SelectAll"
            Comando.CommandType = CommandType.StoredProcedure

            Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
            Dim Ds As DataSet = New DataSet(Comando.CommandText)

            Adapter.Fill(Ds)

            Return Ds

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)

            Return Ds

        End Try

    End Function

    Public Function TraerEnvios_PorFechas(ByVal FechaInicial As Date, ByVal FechaTerminal As Date) As DataSet

        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)

            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_SelectRow_Por_Fechas"
            Comando.CommandType = CommandType.StoredProcedure

            Dim FechaInicio As SqlParameter = New SqlParameter("@FechaInicio", FechaInicial)
            FechaInicio.Direction = ParameterDirection.Input
            FechaInicio.DbType = DbType.Date

            Dim FechaTermino As SqlParameter = New SqlParameter("@FechaTermino", FechaTerminal)
            FechaTermino.Direction = ParameterDirection.Input
            FechaTermino.DbType = DbType.Date

            Comando.Parameters.Add(FechaInicio)
            Comando.Parameters.Add(FechaTermino)

            Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
            Dim Ds As DataSet = New DataSet(Comando.CommandText)

            Adapter.Fill(Ds)

            Return Ds

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)

            Return Ds

        End Try

    End Function

    Public Function Borrar_Envio(ByVal n As Integer) As Boolean

        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Conecta.Open()

            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_DeleteRow"
            Comando.CommandType = CommandType.StoredProcedure
            Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = n
            Comando.ExecuteNonQuery()
            Conecta.Close()
            Conecta.Dispose()

            MsgBox("Borrado Registro " & n, MsgBoxStyle.Critical)

            Return True

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)
            Return False

        End Try

    End Function

    Public Function Modificar_Envio(ByVal n As Integer, ByVal EnvioModificar As Entidades.E_Envio) As Boolean

        EnvioModificar.IdEnvio = n
        'Fecha = EnvioModificar.Fecha
        'Remitente = EnvioModificar.Remitente
        'Destinatario = EnvioModificar.Destinatario
        'Movil = EnvioModificar.Movil
        'TipoDePago = EnvioModificar.TipoDePago
        'TipoDeEnvio = EnvioModificar.TipoDeEnvio
        'ImporteEnvio = EnvioModificar.ImporteEnvio
        'ImporteContrareembolso = EnvioModificar.ImporteContrareembolso
        'CantidadDePaquetes = EnvioModificar.CantidadDePaquetes
        'UltimoEstado = EnvioModificar.UltimoEstado

        Try
            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Conecta.Open()
            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_Update"
            Comando.CommandType = CommandType.StoredProcedure

            Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = EnvioModificar.IdEnvio
            Comando.Parameters.Add("@Fecha", SqlDbType.DateTime, 6, "Fecha").Value = EnvioModificar.Fecha
            Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = EnvioModificar.Remitente
            Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = EnvioModificar.Destinatario
            Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = EnvioModificar.Movil
            Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = EnvioModificar.TipoDePago
            Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = EnvioModificar.TipoDeEnvio
            Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = EnvioModificar.ImporteEnvio
            Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = EnvioModificar.ImporteContrareembolso
            Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = EnvioModificar.CantidadDePaquetes
            Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = EnvioModificar.UltimoEstado

            Comando.ExecuteNonQuery()

            Conecta.Close()
            Conecta.Dispose()

            Return True

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)
            Return False

        End Try

    End Function


    Public Function TraerEnviosCompletosPorFechas(ByVal FechaInicial As Date, ByVal FechaTerminal As Date) As DataSet

        Try

            Dim Conecta As New SqlConnection(StringConexion.CONEXION)
            Comando = New SqlCommand(StringComando, Conecta)
            Comando.CommandText = "Envio_SelectRow_Informe_Por_Fechas"
            Comando.CommandType = CommandType.StoredProcedure

            Dim FechaInicio As SqlParameter = New SqlParameter("@FechaInicio", FechaInicial)
            FechaInicio.Direction = ParameterDirection.Input
            FechaInicio.DbType = DbType.Date

            Dim FechaTermino As SqlParameter = New SqlParameter("@FechaTermino", FechaTerminal)
            FechaTermino.Direction = ParameterDirection.Input
            FechaTermino.DbType = DbType.Date

            Comando.Parameters.Add(FechaInicio)
            Comando.Parameters.Add(FechaTermino)

            Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
            Dim Ds As DataSet = New DataSet(Comando.CommandText)

            Adapter.Fill(Ds)

            Return Ds

        Catch ex As Exception

            MsgBox("No pudo por que " & ex.Message)

            Return Ds

        End Try

    End Function

End Class
